This page last changed on Dec 15, 2012 by mmccarthy.

Literally, years went by without Alfresco being upgraded because I just never carved out the time for it. We finally decided that we needed to get the upgrade done and I just wasn't going to get to it so we talked to Alfresco and they provided us a partner (Tribloom) that we will just pay to do the upgrade. They sent us a Scope Of Work to which we wrote a PO. Duane was actually nice enough to let us use funds from his group to do this, thanks Duane!

Goals
  1. To get things the way we want them, the goals of the upgrade are:
    1. Move Alfresco from 2.1.1 to 4.1.1
    2. Move form SQL Server 2005 to SQL Server 2008
    3. Move from Windows Server 2003 to RHEL 6.1 x64
Current 2.1.1 Server

Before starting the upgrade, I drew the following logical diagram of the pieces that are most important to the upgrade.

Here is a diagram of where we would like to move to:

Planned Steps
  1. Our Alfresco rep contacted a partner that we hired to do the upgrade with/for us. These are the planned steps for that upgrade.
  2. First I read over the supported stacks document here:
    1. 4.X Supported Stacks
  3. Then read about backing up and restoring Alfresco here:
    1. Backup and Restore for Alfresco
  4. The next step was to look over the general upgrade process detailed here:
    1. http://wiki.alfresco.com/wiki/General_Upgrade_Process
  5. I also read over the JVM tuning guide for Alfresco here:
    1. http://wiki.alfresco.com/wiki/JVM_Tuning
  6. I also utilized the installation notes for the test and production servers that I document here:
    1. Production Alfresco Installation Notes
    2. Test Alfresco Installation Notes
  7. [TRIBLOOM] Submit a help ticket to Alfresco support to let them know that we will be attempting this upgrade and keep logging details during the upgrade.
    RHEL 5.5 is target for Tribloom
    Because we have to go through an intermediate version during the request and that version is only supported on RHEL 5.5, the Tribloom upgrade will only be to RHEL 5.5 and MBARI will move to RHEL 6.1.
  8. [Pat Allen] Create four RHEL VMs, one for RHEL 5 test, one for RHEL 5 production, one for RHEL 6 test, and one for RHEL 6 production:
    1. alfresco5.mbari.org (production)
    2. alfresco5-test.mbari.org (test)
    3. alfresco6.mbari.org (production)
    4. alfresco6-test.mbari.org (test)
  9. [Pat Allen] Install JDK 6 U33 x64 on all four machines
  10. [Cathy Sewell] Setup SSL certificates for all four machines
  11. [Kevin Gomes] Shutdown production and test alfrescos (alfresco.mbari.org and alfresco-test.shore.mbari.org)
  12. [Kevin Gomes] Backup alfresco database on equinox.shore.mbari.org to local disk on equinox
  13. [Kevin Gomes] Backup //atlas.shore.mbari.org/Alfresco/alf_data
  14. [Kevin Gomes] Store alf_data backup and alfresco DB backup on equinox somewhere safe
  15. [Kevin Gomes] Copy //atlas.shore.mbari.org/Alfresco/alf_data to //atlas.shore.mbari.org/AlfrescoTest/alf_data
  16. [TRIBLOOM] Install Alfresco 3.4.10 on alfresco5-test.mbari.org
  17. [TRIBLOOM] Point 3.4.10 dir.root to local directory on alfresco5-test.mbari.org
  18. [Neil Conner] Create new 'alfresco' database on foghorn.shore.mbari.org
  19. [Neil Conner] Create new 'alf-temp' database on foghorn.shore.mbari.org
  20. [TRIBLOOM] Point 3.4.10 database to 'alf-temp' database on foghorn.shore.mbari.org
  21. [TRIBLOOM] Start up 3.4.10 on alfresco5-test.mbari.org
  22. [TRIBLOOM] Verify 3.4.10 clean installation is working on alfresco5-test.mbari.org
  23. [TRIBLOOM] Shutdown 3.4.10 on alfresco5-test.mbari.org
  24. [Kevin Gomes] Restore equinox database backup over the 'alfresco' foghorn database
  25. [Kevin Gomes] Change compatibility mode on alfresco db on foghorn from 2000 to 2008.
  26. [TRIBLOOM] Point 3.4.10 database to 'alfresco' database on foghorn
  27. [TRIBLOOM] Point 3.4.10 dir.root to NFS mounted //atlas.shore.mbari.org/AlfrescoTest/alf_data
  28. [TRIBLOOM] Configure 3.4.10 with MBARI configuration (Active directory and SSL)
  29. [TRIBLOOM] Start 3.4.10 and watch log file
  30. [TRIBLOOM] Validate 3.4.10 installation is working properly
    What about indexes?
    We are moving to Solr indexes in 4.1.1 so do we just leave out the migration of the lucene indexes?
  31. [TRIBLOOM] Shutdown 3.4.10 on alfresco5-test.mbari.org
  32. [TRIBLOOM/Neil Conner] Backup //atlas.shore.mbari.org/AlfrescoTest/alf_data
  33. [TRIBLOOM/Neil Conner] Backup 'alfresco' database on foghorn to local disk
  34. [TRIBLOOM] Install Alfresco 4.1.1 on alfresco5-test.mbari.org
  35. [Neil Conner] Create 'alf-temp' database on foghorn
  36. [TRIBLOOM] Point 4.1.1 dir.root to empty local directory
  37. [TRIBLOOM] Point 4.1.1 database to 'alf-temp' database on foghorn
  38. [TRIBLOOM] Startup 4.1.1 on alfresco5-test.mbari.org
  39. [TRIBLOOM] Verify clean 4.1.1 works on alfresco5-test.mbari.org
  40. [TRIBLOOM] Shutdown 4.1.1
  41. [TRIBLOOM] Configure 4.1.1 with MBARI configurations (Active Directory and SSL)
  42. [TRIBLOOM] Point 4.1.1 dir.root to //atlas.shore.mbari.org/AlfrescoTest/alf_data NFS mount
  43. [TRIBLOOM] Point 4.1.1 database to 'alfresco' database on foghorn.shore.mbari.org
  44. [TRIBLOOM] Start 4.1.1 and monitor log files
  45. [TRIBLOOM] Verify 4.1.1 operation
    Solr indexes
    Should we have Alfresco build all the Solr indexes here?
    Can we just do backup/restore
    We may want to try and cold backup/restore from the test system to the production system instead of going through all these steps again!
  46. [TRIBLOOM] Install Alfresco 3.4.10 on alfresco5.mbari.org
  47. [TRIBLOOM] Point 3.4.10 dir.root to local directory on alfresco5.mbari.org
  48. [Neil Conner] Create new 'alf-temp' database on equinox.shore.mbari.org
  49. [TRIBLOOM] Point 3.4.10 database to 'alf-temp' database on equinox.shore.mbari.org
  50. [TRIBLOOM] Start up 3.4.10 on alfresco5.mbari.org
  51. [TRIBLOOM] Verify 3.4.10 clean installation is working on alfresco5.mbari.org
  52. [TRIBLOOM] Shutdown 3.4.10 on alfresco5.mbari.org
  53. [TRIBLOOM] Point 3.4.10 dir.root to NFS mounted //atlas.shore.mbari.org/Alfresco/alf_data
  54. [Kevin Gomes] Change compatibility mode on alfresco db on equinox to 2008
  55. [TRIBLOOM] Point 3.4.10 dir.root to 'alfresco' production database on equinox.shore.mbari.org
  56. [TRIBLOOM] Configure 3.4.10 with MBARI configuration (Active directory and SSL)
  57. [TRIBLOOM] Start 3.4.10 and watch log file
  58. [TRIBLOOM] Validate 3.4.10 installation is working properly
  59. [TRIBLOOM] Shutdown 3.4.10 on alfresco5.mbari.org
  60. [TRIBLOOM/Neil Conner] Backup //atlas.shore.mbari.org/Alfresco/alf_data
  61. [TRIBLOOM/Neil Conner] Backup 'alfresco' database on equinox to local disk
  62. [TRIBLOOM] Install Alfresco 4.1.1 on alfresco5.mbari.org
  63. [TRIBLOOM/Neil Conner] Re-create empty 'alf-temp' database on equinox.shore.mbari.org
  64. [TRIBLOOM] Point 4.1.1 dir.root to empty local directory on alfresco5.mbari.org
  65. [TRIBLOOM] Point 4.1.1 database to 'alf-temp' database on foghorn
  66. [TRIBLOOM] Startup 4.1.1 on alfresco5.mbari.org
  67. [TRIBLOOM] Verify clean 4.1.1 works on alfresco5.mbari.org
  68. [TRIBLOOM] Shutdown 4.1.1
  69. [TRIBLOOM] Configure 4.1.1 with MBARI configurations (Active Directory and SSL)
  70. [TRIBLOOM] Point 4.1.1 dir.root to //atlas.shore.mbari.org/Alfresco/alf_data NFS mount
  71. [TRIBLOOM] Point 4.1.1 database to 'alfresco' database on equinox.shore.mbari.org
  72. [TRIBLOOM] Start 4.1.1 and monitor log files
  73. [TRIBLOOM] Verify 4.1.1 operation
    Solr indexes
    Build Solr indexes here?
    End of Tribloom SOW
    At this point we should have a fully upgraded 4.1.1 Alfresco running on RHEL 5.5 pointing to an NFS mount that points to //atlas.shore.mbari.org/Alfresco/alf_data, points to a local directory for the Solr indexes and points to the 'alfresco' database on equinox.shore.mbari.org. This is the end of the Tribloom scope or work.
  74. [MBARI] Shutdown 4.1.1 on alfresco5-test.mbari.org
  75. [MBARI] Install and configure 4.1.1 on alfresco6-test.mbari.org exactly as it was on alfresco5-test.mbari.org (or copy from alfresco5-test.mbari.org)
    Triblooms instructions are critical here
    In order for use to configure 4.1.1 in the exact same manner on RHEL 6 as was done on RHEL 5.5, we will need very detailed instructions for how Tribloom configured the 4.1.1 installation on alfresco5-test.mbari.org. Or, maybe we can simply copy the 4.1.1 installation to alfresco6-test.
  76. [MBARI] Copy Solr indexes from alfresco5-test.mbari.org to alfresco6-test.mbari.org
  77. [MBARI] Mount //atlas.shore.mbari.org/AlfrescoTest/alf_data on alfresco6-test.mbari.org
  78. [MBARI] Point 4.1.1 dir.root on alfresco6-test.mbari.org to NFS mount
  79. [MBARI] Point 4.1.1 database to 'alfresco' database on foghorn.shore.mbari.org
  80. [MBARI] Start up and verify 4.1.1 installation on alfresco6-test.mbari.org
  81. [MBARI] Shutdown 4.1.1 on alfresco5.mbari.org
  82. [MBARI] Install and configure 4.1.1 on alfresco6.mbari.org exactly as it was on alfresco5.mbari.org (or copy from alfresco5.mbari.org)
  83. [MBARI] Copy Solr indexes from alfresco5.mbari.org to alfresco6.mbari.org
  84. [MBARI] Mount //atlas.shore.mbari.org/Alfresco/alf_data on alfresco6.mbari.org
  85. [MBARI] Point 4.1.1 dir.root on alfresco6.mbari.org to NFS mount
  86. [MBARI] Point 4.1.1 database to 'alfresco' database on equinox.shore.mbari.org
  87. [MBARI] Start up and verify 4.1.1 installation on alfresco6.mbari.org
  88. [MBARI] Create alias so that https://alfresco.mbari.org points to alfresco6.mbari.org
    Dismantle the old
    After all has been verified, the old alfresco.mbari.org 2003 server and alfresco-test.mbari.org can be backed up and destroyed
Actual Upgrade Steps
  1. [kgomes] I sent out a note at 2PM on 12/12 notifying everyone that Alfresco would be going down at 3PM.
  2. [kgomes] I used remote desktop to login as me on alfresco.mbari.org.
  3. [kgomes] I shutdown the Alfresco service and changed it to manual startup.
  4. [kgomes] I logged off alfresco.mbari.org.
  5. [kgomes] I used remote desktop to login as me on alfresco-test.shore.mbari.org.
  6. [kgomes] I shutdown the Alfresco service and changed it to manual restart.
  7. [kgomes] I logged off alfresco-test.shore.mbari.org
  8. [kgomes] I used remote desktop to login as me on foghorn.shore.mbari.org
  9. [kgomes] I opened up to explorer windows and mounted the network drives for atlas shares Alfresco and AlfrescoTest
  10. [kgomes] I created a directory on the Alfresco share called '2012_12_12_2.1.1' to server as the backup location of the production repository
  11. [kgomes] I called Neil and he started a direct Atlas copy of the alf_data directory on the Alfresco share to the new 2012_12_12_2.1.1 directory to serve as a backup.
  12. [kgomes] I also had Neil do the same copy to AlfrescoTest share on atlas (but this time only of the contents inside the alf_data folder because alf_data directory already existed on AlfrescoTest and was mounted to the RHEL VMs).
  13. [kgomes] I started up SQL Server Management Studio and connected to the database server on equinox.shore.mbari.org
  14. [kgomes] I expanded the databases and right-click on the 'Alfresco' database and chose 'Task -> Backup ...'
  15. [kgomes] Accepted the defaults
  16. [kgomes] Under options, I selected 'Verify after backup'
  17. [kgomes] Under General, I selected 'Disk' as the destination, then clicked on 'Add...'
  18. [kgomes] I added the file name '2012_12_12_2.1.1' to the default path as the file name to save it to
  19. [kgomes] I then took about 15 minutes and stated it was completed successfully.
  20. [kgomes] I then mapped the equinox 'backup' folder on foghorn and could then see the backup of the SQL database.
  21. [kgomes] I copied the backup to the backup file to the D:\MSSQL 10.MSSQL\MSSQL\BACKUP directory so I could use it to restore the database on foghorn
  22. [kgomes] On foghorn I started up SQL Server Management Studio again
  23. [kgomes] I right-clicked on the "Databases" icon and select "Restore Database..."
  24. [kgomes] I entered 'Alfresco' as the "To database" name to restore to
  25. [kgomes] I selected 'From Device', then clicked on the "..." button.
  26. [kgomes] I left the default media of "file" and then clicked "Add..."
  27. [kgomes] Then I had to select "All Files" from the "Files of Type" because I forgot to add the .bak extension when I backed it up.
  28. [kgomes] Then selected OK, then OK again.
  29. [kgomes] I put a check mark next to the new device entry.
  30. [kgomes] I looked under "Options" and selected "Overwrite the existing database" even though I don't think it is needed in this case.
  31. [kgomes] Then I clicked OK to fire it off.
  32. [kgomes] After this, Neil and I noticed that the schema being used on the tables was 'LAGOON\DB_Collaboration'. Neil wanted to change that to 'dbo'. He made the change and we may have to edit the JTDS driver URL to use that schema specifically (if it works at all).
  33. [kgomes] I then logged into alfresco.mbari.org and copied the 'lucence-indexes' directory on the D:\alf_data to the 2012_12_12_2.1.1 directory on atlas\Alfresco so that we had a backup of the indexes.
  34. [kgomes] I copied the database backup from equinox to the same share so we had all three: content store, database backup and lucene-indexes all in one spot.
  35. [kgomes] I downloaded version 2.1.7.1, 3.4.10, 3.4.11 and 4.1.1.3 and put them in the /tmp directory on alfresco5-test.mbari.org and on alfresco5.mbari.org
  36. [kgomes] I put a README.txt file in this same directory to explain all this.
  37. [TRIBLOOM] Step 1 - Alfesco 2.1.7.1
    -Unzip alfresco-enterprise-tomcat-2.1.7.1.zip
    -Create directory /opt/alfresco-enterprise-2.1.7.1
    -Create symbolic link from /opt/alfresco to /opt/alfresco-enterprise-2.1.7.1
    -Modify /opt/alfresco/tomcat/shared/classes/alfresco/extension/custom-repository.properties for SQL Server DB
    -Use alf2_1_7@foghorn.shore.mbari.org for the DB and a new/blank content store and indexes
    -Modify /opt/alfresco/tomcat/shared/classes/alfresco/extension/custom-hibernate-dialect.properties for SQL Server DB
    -Create /etc/init.d/alfresco from https://wiki.alfresco.com/wiki/Installing_Alfresco_2.1_on_Ubuntu_7.10 (modify for AlfrescoSvc user, remove iptables, redirection, and open office, and change log location)
    -Adjust permissions/ownership as necessary
    -Adjust access to the firewall as necessary
    -Verify "stock" Alfresco is working (use a web browser on port 8080)
  38. [TRIBLOOM] Step 2 - "Upgrade" Alfresco 2.1.1 content/DB to Alfresco 2.1.7.1
    -Delete the alf_bootstrap_lock table
    -Delete all JBPM_* tables from the DB (this will destroy any in process workflows)
    -Redirect Alfresco to the old DB (Alfresco@foghorn.shore.mbari.org) and content store using /opt/alfresco/tomcat/shared/classes/alfresco/extension/custom-repository.properties
    -Set index.recovery.mode=FULL to rebuild indexes (note this process took about 9 hours)
  39. [TRIBLOOM] Step 3 - Alfresco 2.2.8
    -Run the linux installer ./AlfrescoEnterprise-2.2.8-Linux-x86-Install
        -Use /opt/alfresco-enterprise-2.2.8 for the target directory
    -Remove the old sym link /opt/aflresco rm /opt/alfresco
    -relink /opt/alfresco to 2.2.8 ln -s /opt/alfresco-enterprise-2.2.8 /opt/alfresco
    -Modify /opt/alfresco/tomcat/shared/classes/alfresco/extension/custom-repository.properties for SQL Server DB
    -Use alf2_2_8@foghorn.shore.mbari.org for the DB and a new/blank content store and indexes
    -Modify /opt/alfresco/tomcat/shared/classes/alfresco/extension/custom-hibernate-dialect.properties for SQL Server DB
  40. [TRIBLOOM]
    Step 4 - "Upgrade" Alfresco 2.1.1 content/DB to Alfresco 2.1.7.1
    -Delete the duplicate archive nodes using this script:
    /***** Script for removing duplicate archive nodes  *****/
    delete
      FROM [Alfresco].[dbo].[alf_node_status]
      where node_id in (
      select A.id from (
        SELECT
          count(n.id) as num, n.id
        FROM
          alfresco.dbo.alf_node n
          JOIN alfresco.dbo.alf_node_status nstat ON (nstat.node_id = n.id)
          JOIN alfresco.dbo.alf_store s ON (s.protocol = nstat.protocol AND s.identifier = nstat.identifier)
        group by n.id) A
        where A.num > 1
      ) and protocol='archive'
    -Redirect Alfresco to the old DB (Alfresco@foghorn.shore.mbari.org) and content store using /opt/alfresco/tomcat/shared/classes/alfresco/extension/custom-repository.properties

Document generated by Confluence on Feb 03, 2026 16:22